package com.campus.counseling.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.campus.counseling.entity.TestResult;
import com.campus.counseling.model.dto.TestResultDTO;
import com.campus.counseling.model.query.TestResultQuery;
import com.campus.counseling.model.vo.TestResultVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.Map;

/**
 * 测试结果服务接口
 */
public interface TestResultService extends IService<TestResult> {

    /**
     * 根据记录ID获取测试结果
     * @param recordId 记录ID
     * @return 测试结果
     */
    TestResult getByRecordId(Long recordId);

    /**
     * 保存测试结果
     * @param result 测试结果
     */
    void saveResult(TestResult result);

    /**
     * 更新测试结果
     * @param result 测试结果
     */
    void updateResult(TestResult result);

    @Transactional(rollbackFor = Exception.class)
    void submitTestResult(TestResultDTO resultDTO);

    /**
     * 评审测试结果
     * @param id 测试结果ID
     * @param reviewerId 评审人ID
     * @param comments 评审意见
     */
    void review(Long id, Long reviewerId, String comments);

    /**
     * 解析维度得分JSON字符串
     * @param dimensionScores 维度得分JSON字符串
     * @return 维度得分Map
     */
    Map<String, Double> parseDimensionScores(String dimensionScores);

    /**
     * 格式化维度得分Map为JSON字符串
     * @param dimensionScores 维度得分Map
     * @return 维度得分JSON字符串
     */
    String formatDimensionScores(Map<String, Double> dimensionScores);

    /**
     * 分页查询测试结果
     * @param query 查询参数
     * @return 分页结果
     */
    Page<TestResultVO> getResultPage(TestResultQuery query);
} 